home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 October
/
EnigmA AMIGA RUN 22 (1997)(G.R. Edizioni)(IT)[!][issue 1997-10 & 11][EAR-CD VI].iso
/
progs
/
devel
/
pcq12d_1
/
docs
/
history.pcq
< prev
next >
Wrap
Text File
|
1997-05-17
|
12KB
|
285 lines
===================================================================
Update History
===================================================================
Version 1.2d (May 10 1997)
o Fixed a bug in intuition.i. EasyRequestArgs had wrong
returnvalue, WindowPtr, should be Integer.
o Added stuff to Exec/Types.i:
Type
BOOL = Short;
Const
BOOLTRUE = -1;
BOOLFALSE = 0;
Just to make it easier to use c-functions.
o This one is old but while I remember it.
Utility/utility.i had wrong names for some of the functions.
Stricmp, Strnicmp, ToLower and ToUpper. Changed to
UStricmp, UStrnicmp, UToLower and UToUpper.
o When I tried to set a title in an aslfontrequester the
layout got screwed up. Made a new asl.lib and it worked
ok. Just link with the asl.lib before pcq.lib.
Version 1.2d (May 01 1997)
PCQ Pascal 1.2d is now freeware.
I got a mail from Pat Quaid today that I could put PCQ 1.2d
on Aminet as Freeware.
So the people that has collected the sharewarefee can keep
the money. (That's what Pat sad.)
This version has the includes for 3.1 and pcq.lib for 3.1.
The includes are the work of Andreas Tetzl and pcq.lib is
the work of Bernd Kunnen.
Myself (Nils Sjoholm) has made some correction to the
includes and made some glue routines for missing functions.
The glues are joined to pcq.lib.
I have corrected the includes for some time and I haven't
keeped record of my changes so I don't remeber what the
changes are.:)
***************************************************************
Version 1.2d (August 22, 1992)
o Fixed a problem with typed constant arrays - array elements
with an odd size were not padded.
Version 1.2d (February 15, 1992)
o Fixed the date routines in DateTools
o Fixed a bug with range types that caused them to be one
byte long.
o Comparisons of structured types didn't work - they do now.
o Fixed a problem with the iff.library's GetColorTable glue
routine.
Version 1.2d (September 18, 1991)
o Fixed a bug in multi-dimensional array references.
o Fixed a mistake in the Exec/ExecBase.i file.
o Added support for variable numbers of arguments, including
the va_start and va_arg routines.
o Added support for C style parameter passing, i.e. right-to-
left.
o Added the $X directive for ignoring function return values.
Version 1.2c (August 10, 1991)
o The compiler would not allow New() and Dispose() in programs
compiled under the small initialization code option.
o Since type casts were not functions, constant integers were
never extended if they were cast to, say, a pointer type.
That's not really a bug, but since it is difficult to get
around, the compiler now promotes integer types when it
should.
o The CHIP and FAST keywords were added.
o Added variant records.
o Added the exception that allows pointer declarations to refer
to undefined types.
o Added support for the "e" scaling term in floating point
constants, so for example "2e2" means 2 * 10^2.
o Added the $N directive.
o Added (* and *) as synonyms for { and }
o Added execution profiler.
o Some of the floating point output routines fixed in previous
versions had not yet been incorporated into PCQ.lib.
o Modified the IF statement to omit code inside constant FALSE
IF statements.
o Fixed a bug in the ReadInt routine when no digits were read.
Version 1.2b (June 22, 1991)
o The compiler would ignore function or procedure parameters
following negative constants.
o The compiler now ensures that each element of an array is
word-aligned, if the element is larger than one byte.
o Fixed the looping problem with REPEAT/UNTIL.
o The $A didn't work between the routine header and the code
area.
Version 1.2a (June 8, 1991)
o The XOR operator would produce illegal assembly commands.
o Some floating point comparisons would produce incorrect
results.
o The $A assembly directive now works anywhere in the code,
not just in procedures and functions.
o The compiler used to accept unknown identifiers in typed
constants (as operands of the @ operator).
o The INC and DEC statements were not handling Inc(var1,var2)
forms correctly.
Version 1.2 (April 18, 1991)
o Fixed strlen and CreateTask() to work with 32-bit memory.
o Re-wrote the expression parsing and code generating routines
completely. The routines now use registers much more
effectively, and provide a good base for the separate
peephole optimizer.
o Added a few Turbo Pascal features: you can now use typecasts
anywhere, even in address calculations. Thus you can now
write something like RecordType(Pointer^).Field, which in
version 1.1 was illegal.
o Changed the FOR statement significantly in order to make it
more efficient, and more like Turbo. It boils down to two
differences: FOR loops no longer run a minimum of once (e.g
for i := 1 to 0 do ... will execute zero times), and the BY
clause is gone.
o Added short circuit evaluations, automatic floating point
conversions, Heap functions, Reset and Rewrite.
o You can now use any standard functions or operators in
constant expressions.
o Changed the Read routines to comply with Standard Pascal and
Turbo, in that any white space is skipped before reading
integers and reals. It used to stop at EOLNs.
Version 1.1d, May 6, 1990:
I've begun accumulating small changes under a new version
number purely for aesthetics. The first difference is that the
compiler now creates a SECTION for data only if it has to. That
sounds like an efficiency issue, but actually it wasn't creating a
SECTION at all if it was compiling an External unit.
When StdOut is a file, the compiler no longer writes the line
numbers and all that stuff. I have also made what I hope is the
last fix to the real number reading routines.
The routine that compares include file names to the list of
previously included files is now case-insensitive. I can't
imagine why it wasn't before.
Version 1.1c, April 6, 1990:
I should have guessed that the problem recognizing the sign of
small real numbers on output would have a symmetric problem for
input. It did, and now it doesn't. I also fixed the problem with
signs on real constants. I also added the exp() and ln()
functions recently sent to me by Martin Combs. To avoid inflation
of version numbers, I've changed the date but kept the same
version.
I've been thinking about adding peephole optimization to the
process, and rather than doing it the right way I've been playing
with a separate program. To make that easier, I've removed short
branches from the code generated. A68k adds them where necessary
anyway.
Version 1.1c, March 3, 1990:
The only changes to the compiler are the new standard
functions. The more significant changes were in the runtime
library. First, I replaced the sin() and cos() functions based on
suggestions by Martin Combs - the result is that the results are
accurate to about 3 digits, and only slightly slower. Martin was
kind enough to send along a very useful set of routines, which
also included the tan() and arctan() functions. I also fixed the
routine that writes real numbers, so values between -1.0 and 0.0
now include the minus sign.
Version 1.1b, February 6, 1990:
This program is over a year old.
Added the Sqr() function. Sqr(n) is the same as n * n, but
marginally faster and smaller. Also, the compiler used to
generate lots of errors when an include file was missing. Now it
skips the rest of the comment, like it should.
Apparently floating point constants didn't used to work. Why
am I always the last to know? I also added the Sin() and Cos()
functions, based on an aside during a lecture on an entirely
different topic.
Later I added the sqrt() function, using Newton's method.
Version 1.1a, January 20, 1990:
Fixed a bug in the WriteArb routine that manifested itself
whenever you wrote to a 'File of Something'.
Fixed a bug left in the floating point math library. It seems
that it had not been updated for the all the 1.1 changes, so
during linking it required objects that aren't around anymore.
Since floating point math is now handled by the compiler, I hadn't
noticed it before.
Version 1.1, December 1, 1989:
This version is completely re-written, and has far too many
changes to list them individually here. The main changes are the
with statement, the new IO system, a completely redesigned symbol
table, nested procedures, and several new arithmetic operators.
In order to help port programs from Turbo Pascal and C, I added
typed constants, the Goto statement, and the normal syntax for
multi- dimensional arrays.
Version 1.0c, May 21, 1989:
I changed the input routines around a bit, using DOS files
rather than PCQ files. I buffered the input, and made the
structure more flexible so I could nest includes. Rather than
make up some IfNDef directive, I decided to keep track of the file
names included and skip the ones already done. Buffering the
input cut compile times in half. I would not have guessed
buffering would be that significant, and I suppose I should
rethink PCQ input/output in light of this.
I added code to check for the CTRL-C, so you can break out
early but cleanly. The Ports.i include file had a couple of
errors, which I fixed, and I also fixed the routine that opens a
console for programs that need one. It used to have problems when
there were several arguments in the first write().
I added the SizeOf() function, floating point math, and the
standard functions related to floating point math.
There were several minor problems in the include files which I
found when I got the 1.3 includes, the first official set I've had
since 1.0.
I relaxed the AND, OR and NOT syntax to allow any ordinal
type. This allows you to get bitwise operations on integers and
whatever. I also added a standard function called Bit(),
described above. These are all temporary until I can get sets
into the language.
I finally added string indexing. In doing so I found a bug in
the addressing routine selector(), so I rewrote it to be more
sensible. I think it also produces larger code, but I'm not too
worried because I'm going to add expression trees soon anyway.
Version 1.0b, April 17, 1989:
I fixed a bug in the way complex structures were compared. It
seems that one too many bytes were considered, so quite often the
comparison would fail.
Version 1.0a, April 8, 1989:
This version added 32 bit math, and fixed the case statement.
The math part was just a matter of getting the proper assembly
source, but I changed the case statement completely. Version 1.0
of the compiler produced a table that was searched sequentially
for the appropriate value, which if found was matched up with an
address. I thought all compilers did this, but when debugging a
Turbo Pascal program at work I found that it just did a bunch of
comparisons before each statement, as if it were doing a series of
optimized if statements. I had thought of this and rejected it as
being too simplistic, but if it's good enough for Turbo it's good
enough for me.
The next thing I changed in this release was the startup code.
You can now run PCQ Pascal programs from the Workbench. This was
just a matter of taking care of the Workbench message, but I also
fooled around with standard input and output. If you try to read
or write to standard in or out from a program launched from the
Workbench, the run time code will open a window for you.
I also fixed one bug that I found: an array index that was
not a numeric type had its type confused. Nevermore.
Version 1.0, February 1, 1989
Original release.